import React, { useEffect } from "react";
import { useRouter } from "next/router";
import { useQueryParams, StringParam } from "use-query-params";
import TracesTable from "@/src/components/table/use-cases/traces";
import Page from "@/src/components/layouts/page";
import { api } from "@/src/utils/api";
import { TracesOnboarding } from "@/src/components/onboarding/TracesOnboarding";
import {
getTracingTabs,
TRACING_TABS,
} from "@/src/features/navigation/utils/tracing-tabs";
import { useV4Beta } from "@/src/features/events/hooks/useV4Beta";
import ObservationsEventsTable from "@/src/features/events/components/EventsTable";
export default function Traces() {
const router = useRouter();
const projectId = router.query.projectId as string;
const { isBetaEnabled } = useV4Beta();
const [, setQueryParams] = useQueryParams({ viewMode: StringParam });
// Clear viewMode query when beta is turned off (e.g. from sidebar)
useEffect(() => {
if (!isBetaEnabled) {
setQueryParams({ viewMode: undefined });
}
}, [isBetaEnabled, setQueryParams]);
// Check if the user has tracing configured
const { data: hasTracingConfigured, isLoading } =
api.traces.hasTracingConfigured.useQuery(
{ projectId },
{
enabled: !!projectId,
trpc: {
context: {
skipBatch: true,
},
},
refetchInterval: 10_000,
},
);
const showOnboarding = !isLoading && !hasTracingConfigured;
if (showOnboarding) {
return (
);
}
return (
{isBetaEnabled ? (
) : (
)}
);
}